/**
 * Copyright 1996 self.com.au
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License. (http://www.apache.org/licenses/LICENSE-2.0)
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed 
 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for 
 * the specific language governing permissions and limitations under the License.
 *
 * <dhamma-message src="Atisha (11th century Tibetan Buddhist master)">
 * 	The greatest achievement is selflessness. The greatest worth is self-mastery.
 * 	The greatest quality is seeking to serve others. The greatest precept is continual awareness.
 * 	The greatest medicine is the emptiness of everything. The greatest action is not conforming with the worlds ways.
 * 	The greatest magic is transmuting the passions. The greatest generosity is non-attachment.
 * 	The greatest goodness is a peaceful mind. The greatest patience is humility.
 * 	The greatest effort is not concerned with results. The greatest meditation is a mind that lets go.
 * 	The greatest wisdom is seeing through appearances. 
 * </dhamma-message>
 *
 * @author Ashin Wimalajeewa
 *
 * Note, this is a very old runtime library that I have evolved since 1996. I rarely use it
 * now because the Apache Commons project has made it obsolete.
 */
package self.util;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.StringReader;
import java.util.*;

import self.lang.StringUtils;

final public class Collections {
  static public void removeEntriesThatStartWith( Map map, String prefix ) {
    Iterator itr = map.keySet().iterator();
    while ( itr.hasNext() ) {
      String key = (String) itr.next();
      if ( key.startsWith(prefix) )
        itr.remove();
    }    
  }

	static public void loadCommaDelimitedList( String src, List store ) {
		if (!StringUtils.isNullOrEmpty(src)) {
			StringTokenizer tok = new StringTokenizer(src, ",");
			while (tok.hasMoreElements()) {
				String entry = ((String) tok.nextElement()).trim();
				if (StringUtils.isNullOrEmpty(entry))
					continue;
				store.add(entry);
			}
		}
	}
	
	static public String listToString(List src, String delim) {
		StringBuffer ret = new StringBuffer();
		int i = 0;
		for (Iterator iter = src.iterator(); iter.hasNext();i++) {
			if (i > 0)
				ret.append(delim);
			String element = (String) iter.next();
			ret.append(element);
		}
		return ret.toString();
	}
	
	static public void stringListToList(String src, List store) {
		if (!StringUtils.isNullOrEmpty(src)) {
			try {
				StringReader sr = new StringReader(src);
				BufferedReader br = new BufferedReader(sr);
				try {
					String line;
					while ((line=br.readLine()) != null) 
						store.add(line);
				} finally {
					br.close();
				}
			} catch (IOException err) {
				// not possible b/c of string
			}
		}		
	}
}